GtkWindow: keep a reference of the widget on focus change.
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 19 Jul 2010 13:01:04 +0000 (15:01 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 19 Jul 2010 13:08:43 +0000 (15:08 +0200)
Focus out could lead to the widget being destroyed (for example,
in editable cell renderers when DnD starts), so keep the widget
alive while iterating through the devices.

gtk/gtkwindow.c

index a9fa7185eea78fa1f87d9304f24b02d6702bbe95..ce22ae6c92c03ae09a4fb58adf9cd2a9290cfd28 100644 (file)
@@ -5253,6 +5253,8 @@ do_focus_change (GtkWidget *widget,
   GdkDeviceManager *device_manager;
   GList *devices, *d;
 
+  g_object_ref (widget);
+
   device_manager = gdk_display_get_device_manager (gtk_widget_get_display (widget));
   devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
   devices = g_list_concat (devices, gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_SLAVE));
@@ -5289,6 +5291,7 @@ do_focus_change (GtkWidget *widget,
     }
 
   g_list_free (devices);
+  g_object_unref (widget);
 }
 
 static gint